﻿//list迭代器失效
//#include <iostream>
//#include <list>
//using namespace std;
//int main()
//{
//	int array[] = { 1, 2, 3, 4, 0, 5, 6, 7, 8, 9 };
//	int n = sizeof(array) / sizeof(int);
//	list<int> mylist(array, array + n);
//	auto it = mylist.begin();
//	while (it != mylist.end())
//	{
//		if (*it != 0)
//			cout << *it << " ";
//		else
//			//注意:list删除节点后，只有指向当前节点的迭代器失效了，即此时迭代器指向了一块被删除了区域
//			//其前后的迭代器仍然有效，因为底层为不连续空间，只有被删除的节点才会失效
//			mylist.erase(it);
//		++it;
//	}
//	return 0;
//}//注意，因为list底层空间不连续，所以insert插入数据时不会导致迭代器失效

//#include <iostream>
//#include <list>
//#include <queue>
//using namespace std;
//int main()
//{
//    priority_queue<int> a;
//    priority_queue<int, vector<int>, greater<int> > c;
//    priority_queue<string> b;
//    for (int i = 0; i < 5; i++)
//    {
//        a.push(i);
//        c.push(i);
//    }
//    while (!a.empty())
//    {
//        cout << a.top() << ' ';
//        a.pop();
//    }
//    cout << endl;
//    while (!c.empty())
//    {
//        cout << c.top() << ' ';
//        c.pop();
//    }
//    cout << endl;
//    b.push("abc");
//    b.push("abcd");
//    b.push("cbd");
//    while (!b.empty())
//    {
//        cout << b.top() << ' ';
//        b.pop();
//    }
//    cout << endl;
//    return 0;
//}

//class Solution {
//public:
//    int findKthLargest(vector<int>& nums, int k) {
//        priority_queue<int> q(nums.begin(), nums.end());
//        for (int i = 1; i < k; i++) {
//            q.pop();
//        }
//        return q.top();
//    }
//};